package interfaz;

import java.sql.SQLException;
import java.util.Vector;

import javax.swing.JInternalFrame;

import modelo.CentroEstudios;
import modelo.Hardware;
import modelo.TipoHard;

import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JButton;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JTabbedPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.table.DefaultTableModel;

public class VAnadirHard extends JInternalFrame {

	private CentroEstudios centroEstudios; 
	private JTextField txtNombre;
	private JTextField txtCod;
	private JTextArea txtDatos;
	private JComboBox cmbTipo;
	private JTable tabla;
	private DefaultTableModel modelo;
	private JButton btnEliminar, btnAceptar; 
	
		
	public VAnadirHard(CentroEstudios centroEstudios) {
		
		this.centroEstudios = centroEstudios;
		setClosable(true);
		setTitle("Hardware");
		//setBounds(100, 100, 488, 450);
		setBounds(0, 0, 894, 600);
		getContentPane().setLayout(null);
		
		JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
		//tabbedPane.setBounds(70, 34, 741, 396);
		tabbedPane.setBounds(0, 0, 894, 600);
		getContentPane().add(tabbedPane);
		
		JPanel panel = new JPanel();
		tabbedPane.addTab("Nuevo hardware", null, panel, null);
		panel.setLayout(null);
		
		JLabel lblCdigoHardware = new JLabel("Código hardware:");
		lblCdigoHardware.setBounds(93, 41, 141, 15);
		panel.add(lblCdigoHardware);
		
		JLabel label_1 = new JLabel("Nombre:");
		label_1.setBounds(93, 68, 70, 15);
		panel.add(label_1);
		
		JLabel label_2 = new JLabel("Tipo hardware:");
		label_2.setBounds(93, 102, 141, 15);
		panel.add(label_2);
		
		cmbTipo = new JComboBox(VAnadirHard.this.centroEstudios.vTipoHards);
		cmbTipo.setBounds(241, 97, 218, 24);
		panel.add(cmbTipo);
		
		txtNombre = new JTextField();
		txtNombre.setColumns(10);
		txtNombre.setBounds(241, 66, 218, 19);
		panel.add(txtNombre);
		
		txtCod = new JTextField();
		txtCod.setText("0");
		txtCod.setEditable(false);
		txtCod.setColumns(10);
		txtCod.setBounds(241, 39, 114, 19);
		panel.add(txtCod);
		
		JLabel label_3 = new JLabel("Datos:");
		label_3.setBounds(93, 128, 70, 15);
		panel.add(label_3);
		
		btnAceptar = new JButton("Aceptar");
		btnAceptar.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if(btnAceptar.isEnabled()){
					String seleccionado = cmbTipo.getSelectedItem().toString();
					Hardware hardware = new Hardware(txtCod.getText(), txtNombre.getText(), txtDatos.getText(), seleccionado.substring(0, 2));
					try {
						VAnadirHard.this.centroEstudios.crearHardware(hardware);
						JOptionPane.showMessageDialog(null, "Hardware creado correctamente.", "Hardware", JOptionPane.INFORMATION_MESSAGE);
						cargarDatos();
						ponerBlancos();
					} catch (SQLException e1) {
						JOptionPane.showMessageDialog(null, "No se ha podido crear el hardware.", "Hardware", JOptionPane.ERROR_MESSAGE);
					}
				}
			}
		});
		btnAceptar.setBounds(387, 344, 117, 25);
		panel.add(btnAceptar);
		
		txtDatos = new JTextArea();
		txtDatos.setLineWrap(true);
		txtDatos.setBounds(241, 133, 417, 185);
		panel.add(txtDatos);
		
		JPanel panel_1 = new JPanel();
		tabbedPane.addTab("Hardware", null, panel_1, null);
		panel_1.setLayout(null);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(53, 39, 798, 354);
		panel_1.add(scrollPane);
		
		tabla = new JTable();
		scrollPane.setViewportView(tabla);
		
		btnEliminar = new JButton("Eliminar");
		btnEliminar.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				if (btnEliminar.isEnabled()){
					Hardware hardware = VAnadirHard.this.centroEstudios.vHardwares.elementAt(tabla.getSelectedRow());
					try {
						VAnadirHard.this.centroEstudios.borrarHardware(hardware);
						JOptionPane.showMessageDialog(null, "Hardware borrado correctamente.", "Hardware", JOptionPane.INFORMATION_MESSAGE);
						cargarDatos();
						ponerBlancos();
					} catch (SQLException e1) {
						//e1.printStackTrace();
						JOptionPane.showMessageDialog(null, "No se ha podido borrar el hardware.", "Hardware", JOptionPane.ERROR_MESSAGE);
					}
				}
			}
		});
		btnEliminar.setBounds(363, 416, 117, 25);
		panel_1.add(btnEliminar);
		generarCodigo();
		
		//Desactivar paneles
		if (VMain.establecerPermisos(VAnadirHard.this.centroEstudios.usuario)==2){
			tabbedPane.setEnabledAt(0, false);
			txtCod.setEnabled(false);
			txtNombre.setEnabled(false);
			txtDatos.setEnabled(false);
			cmbTipo.setEnabled(false);
			btnEliminar.setEnabled(false);
			btnAceptar.setEnabled(false);
			tabbedPane.setSelectedIndex(1);
		}
	}

	private void generarCodigo() {
		int codigo = 0;
		try {
			codigo = centroEstudios.generarCodigo("HARDWARE");
			txtCod.setText(Integer.toString(codigo));
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	private void cargarDatos(){
		modelo = new DefaultTableModel();
		modelo.addColumn("idHardware");
		modelo.addColumn("Nombre");
		modelo.addColumn("Tipo");
		modelo.addColumn("Datos");
		for(int i=0;i<VAnadirHard.this.centroEstudios.vHardwares.size();i++){
			Object[] linea = new Object[4];
			linea[0] = VAnadirHard.this.centroEstudios.vHardwares.elementAt(i).getIdHardware();
			linea[1] = VAnadirHard.this.centroEstudios.vHardwares.elementAt(i).getNombre();
			linea[2] = VAnadirHard.this.centroEstudios.vHardwares.elementAt(i).getTipoHardware();
			linea[3] = VAnadirHard.this.centroEstudios.vHardwares.elementAt(i).getDatos();
			modelo.addRow(linea);
		}
		tabla.setModel(modelo);
	}
	
	public void setVisible(boolean b){
		super.setVisible(b);
		if (b){
			generarCodigo();
			cargarDatos();
		}
	}
	
	private void ponerBlancos(){
		generarCodigo();
		txtNombre.setText("");
		cmbTipo.setSelectedIndex(0);
		txtDatos.setText("");
	}
}
